﻿/// <remarks>
///系统名称            :   ITALKI 翻译系统
///模块名称            :   Translate
///文件代码            :   
///功能概述            :   
///创建人              :   Snail
///创建日期            :   2008.08.07
///版本号              :   1.0.0.0
///----------< 修改履历 >---------------------------------------------------------------
///修改日期          修改人              修改内容                           版本号
///------------------------------------------------------------------------------------
/// (C) 2007-2008 上海微语信息技术有限公司  版权所有。保留所有权利。
///------------------------------------------------------------------------------------
///</remarks>

namespace Web.Control.WWW.translate
{
    using System;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    using System.Web;
    using System.Xml;
    using Lx.Web.Common.ControlsUI;
    using BLF.WWW_WWW.translate;
    using Lx.Web.Common.UI;
    using Model.WWW_WWW.translate;

    /// <summary>
    /// 页面类。
    /// </summary>
    public partial class MemberTranslate : BaseControl
    {
        //我的翻译
        protected List<TranslateModel> MyTranslate;
        private XmlNodeList langList;
        protected int ContentCount;
        protected int PageIndex = 1;
        protected int PageSize = 20;
        protected string NickName = "";
        protected string MemberNo = "";

        /// <summary>
        /// 页面装载事件。
        /// </summary>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        protected override void OnLoad(EventArgs e) {
            //判断是否登录
            if (HttpContext.Current.User.Identity.Name == "") {
                Response.Redirect(WWWHost + "/User/login.htm?ReturnUrl=" + Request.Url.AbsoluteUri.Split('?')[0]);
            }

            //判断其是否为翻译成员
            if (Translate.GetTranslateMember(HttpContext.Current.User.Identity.Name) == null)
                Response.Redirect("/translate/join.htm?ReturnUrl=" + HttpUtility.UrlEncode("/translate/translate.htm?lang=" + Request.QueryString["lang"] + "&id=" + Request.Form["hide_itemno"]));

            //加载语言XML列表
            XmlDocument xDoc = new XmlDocument();
            try {
                xDoc.Load(string.Format(Server.MapPath("LangSet/LangSet_{0}.xml"), Globals.Language));
            } catch {
                xDoc.Load(string.Format(Server.MapPath("LangSet/LangSet_en-us.xml"), Globals.Language));
            }
            langList = xDoc.SelectNodes("//LangSet/Lang");


            if (!string.IsNullOrEmpty(Request["p"])) {
                if (Request["p"] == "l") {
                    PageIndex = 999;
                } else {
                    int.TryParse(Request["p"], out PageIndex);
                    if (PageIndex == 0) {
                        PageIndex = 1;
                    }
                }
            }
            MemberNo = (Request["m"] == null ? HttpContext.Current.User.Identity.Name : Request["m"]);
            //获得我的翻译
            MyTranslate = Translate.GetTranslatesByMember(MemberNo, (PageIndex - 1) * PageSize, PageSize, out ContentCount, out NickName);

            base.OnLoad(e);
        }

        /// <summary>
        /// 根据语言缩写获得语言全名。
        /// </summary>
        /// <param name="lang">语言缩写。</param>
        /// <returns>语言全名。</returns>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        protected string GetLangName(string lang) {
            if (langList != null) {
                foreach (XmlNode xn in langList) {
                    if (xn.ChildNodes[0].InnerText == lang)
                        return xn.ChildNodes[1].InnerText;
                }
            }
            return null;
        }

        /// <summary>
        /// 高亮带有{数字}、或HTML代码的文本。
        /// </summary>
        /// <param name="text">原文。</param>
        /// <returns>加色后的文本。</returns>
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        protected string HighLightCode(string text) {
            Regex regex = new Regex(@"<(\S*?)[^>]*>");
            MatchCollection mc = regex.Matches(text);
            text = regex.Replace(text, new MatchEvaluator(replaceHTML));



            regex = new Regex(@"{\d+}");
            mc = regex.Matches(text);
            for (int i = 0; i < mc.Count; i++)
                text = text.Replace(mc[i].Value, string.Format("<font color=\"red\">{0}</font>", mc[i].Value));

            return text;
        }

        /// <summary>
        /// 替换HTMLCode
        /// </summary>
        /// <returns>替换后的文本</returns>
        ///2008.08.13		 Snail				 创建该方法                         1.0.0.0
        private string replaceHTML(Match match) {
            return "<font color=\"red\">" + match.Value.Replace("<", "&lt;").Replace(">", "&gt;") + "</font>";
        }
    }
}